﻿using System;
using Persistencia;
using System.Data;
using System.Collections.Generic;

namespace Indexador
{
    class IndexadorPropio : IEstrategiaIndexado
    {
        #region "variable"

        #endregion

        #region "Metodos publicos"
        /// <summary>
        /// Agrega el archivo al indexador propio.
        /// </summary>
        /// <param name="pathIndexador"></param>
        /// <param name="fileSystemElement"></param>
        public void IndexarElemento(String pathIndexador, FileSystemElement fileSystemElement)
        {
            throw new NotImplementedException();
        }

        public void InicializarIndexador(String pathIndexador)
        {
            throw new NotImplementedException();
        }

        public DataSet Realizarbusqueda(String pathIndexador, String termino)
        {
            try
            {
                FileSystemElementPersistence _file = new FileSystemElementPersistence();
                DataSet resultado = new DataSet();
                TablaResultados(_file.BuscarFSE(termino), out resultado);
                return resultado;
            }
            catch (Exception)
            {
                return new DataSet();
            }
        }

        public void ModificarElemento(String pathIndexador, FileSystemElement fseOriginal, FileSystemElement fseNuevo)
        {
            throw new NotImplementedException();
        }

        public void EliminarElemento(String pathIndexador, FileSystemElement fileSystemElement)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region "Metodos privados"

        private static void TablaResultados(List<FileSystemElement> fse, out DataSet resultado)
        {
            resultado = new DataSet();
            DataTable terminos = new DataTable();
            terminos.Columns.Add(IndexadorCampos.Nombre, typeof(String));
            terminos.Columns.Add(IndexadorCampos.Path, typeof(String));
            terminos.Columns.Add(IndexadorCampos.Extension, typeof(String));
            terminos.Columns.Add(IndexadorCampos.Fecha, typeof(String));
            terminos.Columns.Add(IndexadorCampos.Tamaño, typeof(String));
            foreach (FileSystemElement item in fse)
            {
                terminos.Rows.Add(item.Nombre,
                                  item.Path,
                                  item.Extension,
                                  item.Fecha_Creacion,
                                  item.Tamaño);
            }
            resultado.Tables.Add(terminos);
        }
        #endregion
    }
}
